import axios from 'axios';
import Qs from 'qs';
import {BASE_URL,SMART_CITY_URL} from '@/api/config';
//import { Message, Loading } from 'element-ui'; // 消息提示框组件 这个你们可以不用
import router from './../router';
import {Message} from "element-ui";

// 环境
axios.defaults.baseURL = BASE_URL;

axios.defaults.withCredentials = true;
// 设置请求超时时间
axios.defaults.timeout = 200000;

// 设置post请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';


//添加请求拦截器
axios.interceptors.request.use(
    config => {
        //加载动画
        // openLoading()
        let user_token = window.localStorage.getItem("user_token");

        // console.log(user_token)
        if (user_token) { //如果我的user_token存在(user_token其实就是token)
            user_token = JSON.parse(window.localStorage.getItem("user_token")).value;
            // 设置统一的请求header
            config.headers.common['Authorization'] = 'SHIXUN '+ user_token //授权（每次请求把token带给后台）
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截
axios.interceptors.response.use(response => {
    // debugger
    if (response.status === 403 || response.status === 403) {
        // //跳转到登录页
        Message({message: response.status === 403?'权限不足，无法访问,请联系管理员':'账号已过期,请重新登录', type: 'error'});
        setTimeout(function () {
            // window.location.href = SMART_CITY_URL
            this.$router.push('/login');
        },300)

    } else {
        // 对响应数据做点什么
        return response;
    }
}, error => {
    // debugger
    // 对响应错误做点什么
    if (error.contains("403")) {
        Message({message: '权限不足，无法访问,请联系管理员', type: 'error'});
        //跳转到登录页
        setTimeout(function () {
            // window.location.href = SMART_CITY_URL
            this.$router.push('/login');
        },300)

    }
    return Promise.reject(error);
});


// 封装get方法和post方法
/**
 * get方法，对应get请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function get(url, params) {
    return new Promise((resolve, reject) => {
        axios.get(url, {
            params: params,
            validateStatus: status => {
                if (status === 403 || status === 401) {
                    // //跳转到登录页
                    Message({message: status === 403?'权限不足，无法访问,请联系管理员':'账号已过期,请重新登录', type: 'error'});
                    setTimeout(function () {
                        // window.location.href = SMART_CITY_URL
                        this.$router.push('/login');
                    },300)
                } else {
                    return true;
                }
            }
        }).then(res => {
            // debugger
            resolve(res.data);
            // Loading.service(true).close();
            //  Message({message: '请求成功', type: 'success'});
        }).catch(err => {
            reject(err.data)
            //Loading.service(true).close();
            // Message({message: '加载失败', type: 'error'});
            // 对响应错误做点什么
        })
    });
}

/**
 * post方法，对应post请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function post(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, Qs.stringify(params), {
            validateStatus: status => {
                if (status === 403 || status === 401) {
                    // //跳转到登录页
                    Message({message: status === 403?'权限不足，无法访问,请联系管理员':'账号已过期,请重新登录', type: 'error'});
                    setTimeout(function () {
                        // window.location.href = SMART_CITY_URL
                        this.$router.push('/login');
                    },300)
                } else {
                    return true;
                }
            }
        })
            .then(res => {
                resolve(res.data);
                // Loading.service(true).close();
                // Message({message: '请求成功', type: 'success'});
            })
            .catch(err => {
                reject(err.data)
                // Loading.service(true).close();
                // Message({message: '加载失败', type: 'error'});
            })
    });
}

export function POST(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, params, {
            validateStatus: status => {
                if (status === 403 || status === 401) {
                    // //跳转到登录页
                    Message({message: status === 403?'权限不足，无法访问,请联系管理员':'账号已过期,请重新登录', type: 'error'});
                    setTimeout(function () {
                        // window.location.href = SMART_CITY_URL
                        this.$router.push('/login');
                    },300)
                } else {
                    return true;
                }
            }
        }).then(res => {
            resolve(res.data);
            // Loading.service(true).close();
            //  Message({message: '请求成功', type: 'success'});
        })
            .catch(err => {
                reject(err.data)
                // Loading.service(true).close();
                // Message({message: '加载失败', type: 'error'});
            })
    });
}
